package org.raymond.iworks.study.mq.rabbitmq.classic.lazy;

import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
import java.util.Map;

/**
 * @author raymond
 * @version V1.0
 * @Description: TODO
 */
@Slf4j
public class LazyQueueTask {
    /**
     * 磁盘利用率
     *  惰性队列将尽可能快地将其消息移动到磁盘,即使消息是由发布者作为瞬态发布的.这通常会导致更高的磁盘I/O利用率.
     *  常规队列将消息保存在内存中的时间更长.这将导致延迟的磁盘I/O,这是不均匀的(有更多的峰值),因为更多的数据将需要一次写入磁盘.
     * 内存利用率
     * 测试条件
     * Number of messages: 1,000,000
     * Message body size: 1,000 bytes
     * Message type: persistent
     * Producers: 1
     * Consumers: 0
     * 测试结果:
     * Queue mode|Queue process memory|Messages in memory|Memory used by messages|Node memory
     * default   |257MB	              |386,307	         |368 MB	             |734 MB
     * lazy      |159KB	              |0	             |0                      |117 MB
     * 两个队列都持久化了100万条消息,并使用了1.2GB磁盘空间
     */
    /**
     * 注意事项:
     * 当保持低节点内存使用是一个优先级并且可以接受更高的磁盘I/O和磁盘利用率时,延迟队列是合适的.延迟队列还有其他方面需要考虑
     */
    public static void main(String[] args) {
        Map<String, Object> map = new HashMap<>();
    }
}
